home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / driver1.zip / DRIVER.H < prev    next >
Text File  |  1993-01-04  |  3KB  |  164 lines

  1. /*
  2.  *    driver.h ->    Device Driver Header File
  3.  */
  4.  
  5.  
  6. /*
  7.  *    Status Word Bits
  8.  */
  9.  
  10. #define    Error    0x8000
  11. #define    Busy    0x0100
  12. #define    Done    0x0080
  13.  
  14.  
  15. /*
  16.  *    Media Descriptor Byte Bits
  17.  */
  18.  
  19. #define    TwoSided    1
  20. #define    EightSector    2
  21. #define    Removable    4
  22.  
  23.  
  24. /*
  25.  *    Error Return Codes
  26.  */
  27.  
  28. #define    WriteProtect    0
  29. #define    UnknownUnit    1
  30. #define    DeviceNotReady    2
  31. #define    UnknownCommand    3
  32. #define    crcError    4
  33. #define    BadLength    5
  34. #define    SeekError    6
  35. #define    UnknownMedia    7
  36. #define    SectorNotFound    8
  37. #define    NoPaper        9
  38. #define    WriteFault    10
  39. #define    ReadFault    11
  40. #define    GeneralFailure    12
  41.  
  42.  
  43. typedef    long    Addr;
  44.  
  45.  
  46. /*
  47.  *    structures
  48.  */
  49.  
  50. typedef struct
  51.     {
  52.     char    Length;        /*  Request Header length    */
  53.     char    Unit;        /*  Unit Code            */
  54.     char    Command;    /*  Command Code        */
  55.     int    Status;        /*  Status            */
  56.     char    reserved[8];    /*  DOS Reserved Area        */
  57.     }
  58.     Request;
  59.  
  60. typedef struct
  61.     {
  62.     Request    InitReq;    /*  Request Header        */
  63.     char    nUnits;        /*  number of units        */
  64.     Addr    EndAddr;    /*  Ending Address        */
  65.     Addr    BPBarray;    /*  ptr to BPB array        */
  66.     }
  67.     InitParms;
  68.  
  69. typedef struct
  70.     {
  71.     Request    MediaReq;    /*  Request Header        */
  72.     char    MediaDesc;    /*  Media Descriptor        */
  73.     char    ReturnCode;    /*  Return Code            */
  74.     }
  75.     MediaParms;
  76.  
  77. typedef struct
  78.     {
  79.     Request    BPBReq;        /*  Request Header        */
  80.     char    MediaDesc;    /*  Media Descriptor        */
  81.     Addr    Transfer;    /*  Transfer Address        */
  82.     Addr    BPBTable;    /*  ptr to BPB table        */
  83.     }
  84.     BPBParms;
  85.  
  86. typedef struct
  87.     {
  88.     Request    InOutReq;    /*  Request Header        */
  89.     char    MediaDesc;    /*  Media Descriptor        */
  90.     Addr    Transfer;    /*  Transfer Address        */
  91.     int    Count;        /*  Byte/Sector Count        */
  92.     int    Start;        /*  Starting Sector Number    */
  93.     }
  94.     InOutParms;
  95.  
  96. typedef struct
  97.     {
  98.     Request    ndInputReq;    /*  Request Header        */
  99.     char    Byte;        /*  Byte Read From Device    */
  100.     }
  101.     ndInputParms;
  102.  
  103. typedef struct
  104.     {
  105.     Request    StatusReq;    /*  Request Header        */
  106.     }
  107.     StatusParms;
  108.  
  109. typedef struct
  110.     {
  111.     Request    FlushReq;    /*  Request Header        */
  112.     }
  113.     FlushParms;
  114.  
  115. typedef struct
  116.     {
  117.     int    BytesPerSector;
  118.     char    SecsPerAllocUnit;
  119.     int    ReservedSectors;
  120.     char    FATCount;
  121.     int    RootDirEntries;
  122.     int    SectorsPerLogical;
  123.     char    MediaDesc;
  124.     int    SecsPerFAT;
  125.     }
  126.     BPB;
  127.  
  128. typedef struct
  129.     {
  130.     char    BootJump[3];
  131.     char    Name[8];
  132.     BPB    BootBPB;
  133.     int    SecsPerTrack;
  134.     int    HeadCount;
  135.     int    HiddenCount;
  136.     }
  137.     BootSector;
  138.  
  139.  
  140. /*
  141.  *    externals
  142.  */
  143.  
  144. extern Request    ReqHdr;        /*  current Request Header    */
  145.  
  146. extern int    CopyB();    /*  copy bytes            */
  147. extern int    CopyW();    /*  copy words            */
  148. extern Addr    Dword();    /*  converts ptr to DWORD    */
  149. extern Addr    EndAddr();    /*  returns Ending Address    */
  150. extern char    InB();        /*  input byte            */
  151. extern int    InW();        /*  input word            */
  152. extern char    OutB();        /*  output byte            */
  153. extern int    OutW();        /*  output word            */
  154. extern char    PeekB();    /*  get byte from Addr        */
  155. extern int    PeekW();    /*  get word from Addr        */
  156. extern char    PokeB();    /*  put byte to Addr        */
  157. extern int    PokeW();    /*  put word to Addr        */
  158. extern int    SetB();        /*  set bytes            */
  159. extern int    SetW();        /*  set words            */
  160.  
  161. /*
  162.  *    END of driver.h
  163.  */
  164.